<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>qLibc: containers/qqueue.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">qLibc
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('qqueue_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">qqueue.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Queue implementation.  
<a href="#details">More...</a></p>

<p><a href="qqueue_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7bd8537313542cb0db0c912fce4af056"><td class="memItemLeft" align="right" valign="top">qqueue_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a7bd8537313542cb0db0c912fce4af056">qqueue</a> (int options)</td></tr>
<tr class="memdesc:a7bd8537313542cb0db0c912fce4af056"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create new queue container.  <a href="#a7bd8537313542cb0db0c912fce4af056">More...</a><br/></td></tr>
<tr class="separator:a7bd8537313542cb0db0c912fce4af056"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada41104b85c01a5773263c3ff84f9dc5"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#ada41104b85c01a5773263c3ff84f9dc5">qqueue_setsize</a> (qqueue_t *queue, size_t max)</td></tr>
<tr class="memdesc:ada41104b85c01a5773263c3ff84f9dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;setsize(): Sets maximum number of elements allowed in this queue.  <a href="#ada41104b85c01a5773263c3ff84f9dc5">More...</a><br/></td></tr>
<tr class="separator:ada41104b85c01a5773263c3ff84f9dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3111eeb954b1af9c0c8a67f96968b988"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a3111eeb954b1af9c0c8a67f96968b988">qqueue_push</a> (qqueue_t *queue, const void *data, size_t size)</td></tr>
<tr class="memdesc:a3111eeb954b1af9c0c8a67f96968b988"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;push(): Pushes an element onto the top of this queue.  <a href="#a3111eeb954b1af9c0c8a67f96968b988">More...</a><br/></td></tr>
<tr class="separator:a3111eeb954b1af9c0c8a67f96968b988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a382fb2a1977afc2b129bded75a41ed8b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a382fb2a1977afc2b129bded75a41ed8b">qqueue_pushstr</a> (qqueue_t *queue, const char *str)</td></tr>
<tr class="memdesc:a382fb2a1977afc2b129bded75a41ed8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;pushstr(): Pushes a string onto the top of this queue.  <a href="#a382fb2a1977afc2b129bded75a41ed8b">More...</a><br/></td></tr>
<tr class="separator:a382fb2a1977afc2b129bded75a41ed8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2952d24a9a9f6cc8121f491faec4c4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#abe2952d24a9a9f6cc8121f491faec4c4">qqueue_pushint</a> (qqueue_t *queue, int64_t num)</td></tr>
<tr class="memdesc:abe2952d24a9a9f6cc8121f491faec4c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;pushint(): Pushes a integer onto the top of this queue.  <a href="#abe2952d24a9a9f6cc8121f491faec4c4">More...</a><br/></td></tr>
<tr class="separator:abe2952d24a9a9f6cc8121f491faec4c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86b2d6fab3d2426cda120d46e17ec65a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a86b2d6fab3d2426cda120d46e17ec65a">qqueue_pop</a> (qqueue_t *queue, size_t *size)</td></tr>
<tr class="memdesc:a86b2d6fab3d2426cda120d46e17ec65a"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;pop(): Removes a element at the top of this queue and returns that element.  <a href="#a86b2d6fab3d2426cda120d46e17ec65a">More...</a><br/></td></tr>
<tr class="separator:a86b2d6fab3d2426cda120d46e17ec65a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95ad438031ccd21b02169b9b685851c3"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a95ad438031ccd21b02169b9b685851c3">qqueue_popstr</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:a95ad438031ccd21b02169b9b685851c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;popstr(): Removes a element at the top of this queue and returns that element.  <a href="#a95ad438031ccd21b02169b9b685851c3">More...</a><br/></td></tr>
<tr class="separator:a95ad438031ccd21b02169b9b685851c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade3de0f1655569417856bb9758f1017c"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#ade3de0f1655569417856bb9758f1017c">qqueue_popint</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:ade3de0f1655569417856bb9758f1017c"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;popint(): Removes a integer at the top of this queue and returns that element.  <a href="#ade3de0f1655569417856bb9758f1017c">More...</a><br/></td></tr>
<tr class="separator:ade3de0f1655569417856bb9758f1017c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e9a5e7b48086a5335de5047ab7da8f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a4e9a5e7b48086a5335de5047ab7da8f3">qqueue_popat</a> (qqueue_t *queue, int index, size_t *size)</td></tr>
<tr class="memdesc:a4e9a5e7b48086a5335de5047ab7da8f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;popat(): Returns and remove the element at the specified position in this queue.  <a href="#a4e9a5e7b48086a5335de5047ab7da8f3">More...</a><br/></td></tr>
<tr class="separator:a4e9a5e7b48086a5335de5047ab7da8f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08067efa9b39e73c2984f58a3d045906"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a08067efa9b39e73c2984f58a3d045906">qqueue_get</a> (qqueue_t *queue, size_t *size, bool newmem)</td></tr>
<tr class="memdesc:a08067efa9b39e73c2984f58a3d045906"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;<a class="el" href="qhttpclient_8c.html#af16a3eb0912e8b5d4896466632d9c843" title="qhttpclient-&gt;get(): Downloads a file from the remote host using GET method. ">get()</a>: Returns an element at the top of this queue without removing it.  <a href="#a08067efa9b39e73c2984f58a3d045906">More...</a><br/></td></tr>
<tr class="separator:a08067efa9b39e73c2984f58a3d045906"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac04a0dcde8dba0b43c1c8ee3aa87035e"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#ac04a0dcde8dba0b43c1c8ee3aa87035e">qqueue_getstr</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:ac04a0dcde8dba0b43c1c8ee3aa87035e"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;getstr(): Returns an string at the top of this queue without removing it.  <a href="#ac04a0dcde8dba0b43c1c8ee3aa87035e">More...</a><br/></td></tr>
<tr class="separator:ac04a0dcde8dba0b43c1c8ee3aa87035e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00afe6738073f11568f5b75c11bd11a2"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a00afe6738073f11568f5b75c11bd11a2">qqueue_getint</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:a00afe6738073f11568f5b75c11bd11a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;getint(): Returns an integer at the top of this queue without removing it.  <a href="#a00afe6738073f11568f5b75c11bd11a2">More...</a><br/></td></tr>
<tr class="separator:a00afe6738073f11568f5b75c11bd11a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a947c732d507e74898625d385c7595d00"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a947c732d507e74898625d385c7595d00">qqueue_getat</a> (qqueue_t *queue, int index, size_t *size, bool newmem)</td></tr>
<tr class="memdesc:a947c732d507e74898625d385c7595d00"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;getat(): Returns an element at the specified position in this queue without removing it.  <a href="#a947c732d507e74898625d385c7595d00">More...</a><br/></td></tr>
<tr class="separator:a947c732d507e74898625d385c7595d00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a732d5260a04c2f67fa28f690eb31566c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a732d5260a04c2f67fa28f690eb31566c">qqueue_size</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:a732d5260a04c2f67fa28f690eb31566c"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;size(): Returns the number of elements in this queue.  <a href="#a732d5260a04c2f67fa28f690eb31566c">More...</a><br/></td></tr>
<tr class="separator:a732d5260a04c2f67fa28f690eb31566c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a407c506258030896676079f9125132b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a407c506258030896676079f9125132b9">qqueue_clear</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:a407c506258030896676079f9125132b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;clear(): Removes all of the elements from this queue.  <a href="#a407c506258030896676079f9125132b9">More...</a><br/></td></tr>
<tr class="separator:a407c506258030896676079f9125132b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39066762f093f61a310dc3b3550c8780"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a39066762f093f61a310dc3b3550c8780">qqueue_debug</a> (qqueue_t *queue, FILE *out)</td></tr>
<tr class="memdesc:a39066762f093f61a310dc3b3550c8780"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;debug(): Print out stored elements for debugging purpose.  <a href="#a39066762f093f61a310dc3b3550c8780">More...</a><br/></td></tr>
<tr class="separator:a39066762f093f61a310dc3b3550c8780"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a748db13e1474f59abbc49f922cb90b76"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="qqueue_8c.html#a748db13e1474f59abbc49f922cb90b76">qqueue_free</a> (qqueue_t *queue)</td></tr>
<tr class="memdesc:a748db13e1474f59abbc49f922cb90b76"><td class="mdescLeft">&#160;</td><td class="mdescRight">qqueue-&gt;free(): Free qqueue_t  <a href="#a748db13e1474f59abbc49f922cb90b76">More...</a><br/></td></tr>
<tr class="separator:a748db13e1474f59abbc49f922cb90b76"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Queue implementation. </p>
<p>qqueue container is a queue implementation. It represents a first-in-first-out(FIFO). It extends qlist container that allow a linked-list to be treated as a queue.</p>
<div class="fragment"><div class="line">[Conceptional Data Structure Diagram]</div>
<div class="line"></div>
<div class="line">                    top     bottom</div>
<div class="line">DATA POP    &lt;==    [ A ][ B ][ C ]  &lt;== DATA PUSH</div>
<div class="line">(positive index)     0    1    2</div>
<div class="line">(negative index)    -3   -2   -1</div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="comment">// create queue</span></div>
<div class="line">qqueue_t *queue = qQueue();</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: integer queue</span></div>
<div class="line">queue-&gt;pushint(queue, 1);</div>
<div class="line">queue-&gt;pushint(queue, 2);</div>
<div class="line">queue-&gt;pushint(queue, 3);</div>
<div class="line"></div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, queue-&gt;popint(queue));</div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, queue-&gt;popint(queue));</div>
<div class="line">printf(<span class="stringliteral">&quot;popint(): %d\n&quot;</span>, queue-&gt;popint(queue));</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: string queue</span></div>
<div class="line">queue-&gt;pushstr(queue, <span class="stringliteral">&quot;A string&quot;</span>);</div>
<div class="line">queue-&gt;pushstr(queue, <span class="stringliteral">&quot;B string&quot;</span>);</div>
<div class="line">queue-&gt;pushstr(queue, <span class="stringliteral">&quot;C string&quot;</span>);</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">char</span> *str = queue-&gt;popstr(queue);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line">str = queue-&gt;popstr(queue);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line">str = queue-&gt;popstr(queue);</div>
<div class="line">printf(<span class="stringliteral">&quot;popstr(): %s\n&quot;</span>, str);</div>
<div class="line">free(str);</div>
<div class="line"></div>
<div class="line"><span class="comment">// example: object queue</span></div>
<div class="line">queue-&gt;push(queue, <span class="stringliteral">&quot;A object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;A object&quot;</span>));</div>
<div class="line">queue-&gt;push(queue, <span class="stringliteral">&quot;B object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;B object&quot;</span>));</div>
<div class="line">queue-&gt;push(queue, <span class="stringliteral">&quot;C object&quot;</span>, <span class="keyword">sizeof</span>(<span class="stringliteral">&quot;C object&quot;</span>));</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> *obj = queue-&gt;pop(queue, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line">obj = queue-&gt;pop(queue, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line">obj = queue-&gt;pop(queue, NULL);</div>
<div class="line">printf(<span class="stringliteral">&quot;pop(): %s\n&quot;</span>, (<span class="keywordtype">char</span>*)obj);</div>
<div class="line">free(obj);</div>
<div class="line"></div>
<div class="line"><span class="comment">// release</span></div>
<div class="line">queue-&gt;free(queue);</div>
<div class="line"></div>
<div class="line">[Output]</div>
<div class="line">popint(): 3</div>
<div class="line">popint(): 2</div>
<div class="line">popint(): 1</div>
<div class="line">popstr(): C string</div>
<div class="line">popstr(): B string</div>
<div class="line">popstr(): A string</div>
<div class="line">pop(): C object</div>
<div class="line">pop(): B object</div>
<div class="line">pop(): A object</div>
</div><!-- fragment --> 
<p>Definition in file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a7bd8537313542cb0db0c912fce4af056"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">qqueue_t* qqueue </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>options</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create new queue container. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">options</td><td>combination of initialization options.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced qqueue container, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line">qqueue_t *queue = qQueue(QQUEUE_THREADSAFE);</div>
</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Available options:<ul>
<li>QQUEUE_THREADSAFE - make it thread-safe. </li>
</ul>
</dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00129">129</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="ada41104b85c01a5773263c3ff84f9dc5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t qqueue_setsize </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;setsize(): Sets maximum number of elements allowed in this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">max</td><td>maximum number of elements. 0 means no limit.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>previous maximum number. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00177">177</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a3111eeb954b1af9c0c8a67f96968b988"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qqueue_push </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;push(): Pushes an element onto the top of this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">data</td><td>a pointer which points data memory. </td></tr>
    <tr><td class="paramname">size</td><td>size of the data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>EINVAL : Invalid argument.</li>
<li>ENOBUFS : Queue full. Only happens when this queue has set to have limited number of elements)</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00195">195</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a382fb2a1977afc2b129bded75a41ed8b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qqueue_pushstr </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;pushstr(): Pushes a string onto the top of this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">data</td><td>a pointer which points data memory. </td></tr>
    <tr><td class="paramname">size</td><td>size of the data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>EINVAL : Invalid argument.</li>
<li>ENOBUFS : Queue full. Only happens when this queue has set to have limited number of elements.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00213">213</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="abe2952d24a9a9f6cc8121f491faec4c4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qqueue_pushint </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t&#160;</td>
          <td class="paramname"><em>num</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;pushint(): Pushes a integer onto the top of this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">num</td><td>integer data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOBUFS : Queue full. Only happens when this queue has set to have limited number of elements.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00233">233</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a86b2d6fab3d2426cda120d46e17ec65a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qqueue_pop </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;pop(): Removes a element at the top of this queue and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00249">249</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a95ad438031ccd21b02169b9b685851c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* qqueue_popstr </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;popstr(): Removes a element at the top of this queue and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced string element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The string element should be pushed through pushstr(). </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00267">267</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="ade3de0f1655569417856bb9758f1017c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t qqueue_popint </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;popint(): Removes a integer at the top of this queue and returns that element. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an integer value, otherwise returns 0. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The integer element should be pushed through pushint(). </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00291">291</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a4e9a5e7b48086a5335de5047ab7da8f3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qqueue_popat </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;popat(): Returns and remove the element at the specified position in this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">index</td><td>index at which the specified element is to be inserted </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ERANGE : Index out of range.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Negative index can be used for addressing a element from the bottom in this queue. For example, index -1 will always pop a element which is pushed at very last time. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00320">320</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a08067efa9b39e73c2984f58a3d045906"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qqueue_get </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>newmem</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;<a class="el" href="qhttpclient_8c.html#af16a3eb0912e8b5d4896466632d9c843" title="qhttpclient-&gt;get(): Downloads a file from the remote host using GET method. ">get()</a>: Returns an element at the top of this queue without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored. </td></tr>
    <tr><td class="paramname">newmem</td><td>whether or not to allocate memory for the element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00337">337</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="ac04a0dcde8dba0b43c1c8ee3aa87035e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* qqueue_getstr </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;getstr(): Returns an string at the top of this queue without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of malloced string element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The string element should be pushed through pushstr(). </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00355">355</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a00afe6738073f11568f5b75c11bd11a2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t qqueue_getint </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;getint(): Returns an integer at the top of this queue without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an integer value, otherwise returns 0. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ENOENT : Queue is empty.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The integer element should be pushed through pushint(). </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00379">379</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a947c732d507e74898625d385c7595d00"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* qqueue_getat </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>newmem</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;getat(): Returns an element at the specified position in this queue without removing it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">index</td><td>index at which the specified element is to be inserted </td></tr>
    <tr><td class="paramname">size</td><td>if size is not NULL, element size will be stored. </td></tr>
    <tr><td class="paramname">newmem</td><td>whether or not to allocate memory for the element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer of element, otherwise returns NULL. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">errno</td><td>will be set in error condition.<ul>
<li>ERANGE : Index out of range.</li>
<li>ENOMEM : Memory allocation failure.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Negative index can be used for addressing a element from the bottom in this queue. For example, index -1 will always get a element which is pushed at very last time. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00409">409</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a732d5260a04c2f67fa28f690eb31566c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t qqueue_size </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;size(): Returns the number of elements in this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of elements in this queue. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00420">420</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a407c506258030896676079f9125132b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void qqueue_clear </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;clear(): Removes all of the elements from this queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00429">429</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a39066762f093f61a310dc3b3550c8780"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool qqueue_debug </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>out</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;debug(): Print out stored elements for debugging purpose. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer. </td></tr>
    <tr><td class="paramname">out</td><td>output stream FILE descriptor such like stdout, stderr.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if successful, otherwise returns false. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00441">441</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
<a class="anchor" id="a748db13e1474f59abbc49f922cb90b76"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void qqueue_free </td>
          <td>(</td>
          <td class="paramtype">qqueue_t *&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>qqueue-&gt;free(): Free qqueue_t </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>qqueue container pointer.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>always returns true. </dd></dl>

<p>Definition at line <a class="el" href="qqueue_8c_source.html#l00452">452</a> of file <a class="el" href="qqueue_8c_source.html">qqueue.c</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_0b61c55142250c0cc363383afd8075a4.html">containers</a></li><li class="navelem"><a class="el" href="qqueue_8c.html">qqueue.c</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
